---
title: OBRetentionService client reference
summary: Reference for the ArchiveDocument operation, the only contract operation this repository calls through HylandOutBoundContractClient.
status: draft
owner: ProcessOB3PRetention team
last_reviewed: 2026-10-22
---

# OBRetentionService client reference

This page documents every operation of `ThirdPartyArchivalService`† that repository source calls through `HylandOutBoundContractClient`. The contract declares one operation and it is documented here.

---

## ArchiveDocument

Delivers one document, with the claim numbers of a batch as keywords, to the consumed service and returns a `long` result.

| Field | Value |
| --- | --- |
| **Operation** | `ArchiveDocument` |
| **SOAP action** | `WebServicePublishing/ThirdPartyArchivalService/Integration/ArchiveDocument` |
| **Proxy member** | `long ArchiveDocument(OBDocumentArchiveArchiveDocument DocumentArchiveData)` |
| **Input message** | `HylandOutBoundContract_ArchiveDocument_InputMessage` |
| **Output message** | `HylandOutBoundContract_ArchiveDocument_OutputMessage` |
| **Declared faults** | None declared |
| **Called by** | `OnBaseService.ProcessRetention` (`ProcessOB3PRetention/Services/OnBaseService.cs:40`) |
| **Source** | `ProcessOB3PRetention/Services/OnBaseService.cs:40` |
| **Governing settings** | Endpoint address from the setting `ProcessOB3PRetention.WSPEndPointUrl`; binding from `<client><endpoint name="BasicHttpBinding_HylandOutBoundContract">` in `ProcessOB3PRetention/App.config`; no timeout, no client credential. See [Endpoint resolution](architecture.md#endpoint-resolution) |

### Input message

| Part | Type | Required | Bound from | Purpose |
| --- | --- | --- | --- | --- |
| `DocumentArchiveData` | `OBDocumentArchiveArchiveDocument` | Not stated in the WSDL (optional, nillable) | Built in `OnBaseService.ProcessRetention` | Wrapper for the document content and keywords |
| `DocumentArchiveData.FileInfo.Base64FileStream` | `xs:string` | Not stated in the WSDL | Literal in `ProcessOB3PRetention/Services/OnBaseService.cs`, a placeholder text document | The document content |
| `DocumentArchiveData.FileInfo.MIMEType` | `xs:string` | Not stated in the WSDL | Literal `text/plain` in `ProcessOB3PRetention/Services/OnBaseService.cs` | The document media type |
| `DocumentArchiveData.FileInfo.FileExtension` | `xs:string` | Not stated in the WSDL | Not set | Not supplied by this repository |
| `DocumentArchiveData.Keywords.StandAlone.ClaimNumber_Collection` | `ArrayOfstring` | Not stated in the WSDL | The `claimIds` parameter of `ProcessRetention`, the claim numbers of the current batch | The claim numbers delivered to OnBase |
| `DocumentArchiveData.Keywords.Multi_Instance_Keyword_Group` and `Single_Instance_Keyword_Group` | Empty types | Not stated in the WSDL | Not set | Not supplied by this repository |

### Output message

The `long` result of `ArchiveDocumentResult` is returned unchanged by `OnBaseService.ProcessRetention`. The caller logs it as `OnBase Document ID: {onbaseId}` and does not validate it for zero or negative values, nor persist it beyond the log line. What the value means inside OnBase is not stated in the WSDL**.

| Part | Type | Consumed by the caller | Notes |
| --- | --- | --- | --- |
| `ArchiveDocumentResult` | `xs:long` | Yes, logged only | Not validated; see [Tech debt](tech-debt.md) |

### Faults

| Fault | Surfaces as | Handled at the call site |
| --- | --- | --- |
| Generic SOAP fault or transport failure (no fault is declared in the WSDL) | A `System.ServiceModel` exception raised by the proxy; the specific type is not distinguished in source | Not handled in `OnBaseService`; the exception propagates to `ThirdPartyRetentionProcessor.Execute`, which logs the message and rethrows. See [Consumption](consumption.md#error-handling-at-the-call-sites) |

### Call site

```csharp
var archiveDocument = new OBDocumentArchiveArchiveDocument
{
    FileInfo = new FileInfoArchiveDocument
    {
        Base64FileStream = "dGVzdCBkb2M=",
        MIMEType = "text/plain"
    },
    Keywords = new KeywordsArchiveDocument
    {
        StandAlone = new StandAloneArchiveDocument
        {
            ClaimNumber_Collection = claimIds
        }
    }
};

long result = _client.ArchiveDocument(archiveDocument);
```

| Aspect | Finding |
| --- | --- |
| Invocation frequency | Once per batch, sequentially. Batch size comes from `processob3pretention.processbatchsize`, seeded 200 with a code fallback of 100 for an empty or invalid value; a missing key throws `ApplicationException` |
| Result cached | No |
| Timeout at this call site | None; not specified, transport default applies |
| Retry at this call site | None |

### Notes

- The call is synchronous and blocking. The task-based overload the generator produced is not used.
- No call is made when the batch source returns zero claims.
- If the call succeeds and the following step that marks the batch as processed fails, the batch has been sent but is not recorded as processed, so a later run could resend the same claims*. See [Business rules](business-rules.md).

---

## Coverage checklist

| Operation | Documented section | Called by |
| --- | --- | --- |
| `ArchiveDocument` | [`ArchiveDocument`](#archivedocument) | `OnBaseService.ProcessRetention` |

The contract declares 1 operation on [Contract](contract.md#operations) and 1 is documented here.

## Related documentation
- [Client index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Contract](contract.md)
- [Operation map](operation-map.md)
- [Consumption](consumption.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `†` are derived from dependency library
> documentation via the Legends CLI. Statements marked with `*` were inferred
> from code structure or contextual evidence. Statements marked with `**` could
> not be confirmed; treat as unknown until verified.

## Sources
- ProcessOB3PRetention/Connected Services/OBRetentionService/EISClientWithConfig.wsdl
- ProcessOB3PRetention/Services/OnBaseService.cs
- ProcessOB3PRetention/ThirdPartyRetentionProcessor.cs
- ProcessOB3PRetention/App.config
- environmentSettings/settings.yml
